<html>
    <head>
        <title>使用嵌入式文件</title>
    </head>
    <body>
        <script>
            /*
                        二、使用嵌入式文件

                                应首先将文件标记为"嵌入式资源"以将文件嵌入到程序集中.

                                1、嵌入文件
                                        
                                        ①、最简单的方式： 最简单的方法是从 "解决方案资源管理器"中选择文件，并从"属性窗口" 将 "构建操作" 设置为"嵌入式资源"。

                                        ②、编辑项目文件 .csproj：
                                                如果要添加多个文件，直接在 visual studio 中操作不方便，可以直接编辑 .csproj 文件

                                                    <ItemGroup>
                                                        <EmbeddedResource Include="MyResources\**\*.*" />
                                                        <Content Remove="MyResources\**\*.*" />
                                                    </ItemGroup>
                                                此配置递归地添加项目MyResources文件夹下的所有文件（包括你将来将添加的文件）。

                                                如果文件名包含一些特殊字符，则在项目/程序集中嵌入文件可能会导致问题。
                                                为了克服这个限制：
                                                  
                                                    将Microsoft. Exents.FileProviders.EmbeddedNuGet包添加到包含嵌入式资源的项目中。

                                                    将<GenerateEmbeddedFilesManifest（生成嵌入式文件清单）>true</GenerateEmbeddedFilesManifest>添加到.csproj文件的<PropertyGroup>...</PropertyGroup>部分。
                    
                    
                               2、配置虚拟文件系统  AbpVirtualFileSystemOptions
                                        （将嵌入式文件注册到虚拟文件系统）
                                        使用 AbpVirtualFileSystemOptions 选项类将 "嵌入式文件" 注册到模块的 ConfigureServices 方法中》

                                        eg： 将嵌入式文件添加到虚拟文件系统:

                                                Configure<AbpVirtualFileSystemOptions>(options=>{
                                                    options.FileSets.AddEmbedded<MyModule>();     // 将给定类型所在程序集中的嵌入式文件添加到虚拟文件系统。 
                                                });

                                            AddEmbedded()方法可以有两个参数：
                                                  ①、baseNamespace：  
                                                            当你没有配置上面解释的GenerateEmbeddedFilesManifest（生成嵌入式文件清单）步骤并且你的根命名空间不为空时才需要。
                                                            在这种情况下，请在此处设置你的根命名空间。 

                                                  ②、baseFolder
                                                            如果你不想公开项目中的所有嵌入式文件，但是只想公开特定文件夹(和子文件夹/文件)，
                                                            那么你可以相对于你的项目根文件夹设置基本文件夹。
                                                
                                                eg:   在项目中的 MyResources 文件夹在添加文件
                                                            Configure<AbpVirtualFileSystemOptions>(options =>
                                                            {
                                                                options.FileSets.AddEmbedded<MyModule>(
                                                                    baseNamespace: "Acme.BookStore", // 设置根命名空间
                                                                    baseFolder: "/MyResources"  // 设置根文件夹(项目中的文件夹路径)
                                                                );
                                                            });

                                                            本例子假设：
                                                                 你的项目根（默认）命名空间是Acme.BookStore。
                                                                 你的项目有一个文件夹，名为MyResources
                                                                 你只想将MyResources文件夹添加到虚拟文件系统。  
                    */
        </script>
    </body>
</html>